//package com.example.springai.langchat;
//
//import dev.langchain4j.agent.tool.*;
//import dev.langchain4j.data.message.AiMessage;
//import dev.langchain4j.data.message.ChatMessage;
//import dev.langchain4j.data.message.ToolExecutionResultMessage;
//import dev.langchain4j.data.message.UserMessage;
//import dev.langchain4j.model.chat.ChatLanguageModel;
//import dev.langchain4j.model.openai.OpenAiChatModel;
//import dev.langchain4j.model.output.structured.Description;
//import dev.langchain4j.service.tool.DefaultToolExecutor;
//
//import lombok.Data;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.UUID;
//
///**
// * Author： roy
// * Description：
// **/
//public class ToolsDemo3 {
//    public static void main(String[] args) {
////构建模型，过程略
//        ChatLanguageModel model = OpenAiChatModel.builder().baseUrl("https://api.siliconflow.cn")
//                .apiKey("sk-nrvjihoykgbjabnelziszukgkcankraqcwtvohvpcuepuyyz").modelName("deepseek-ai/DeepSeek-V3")
//                .logResponses(true)
//                .logRequests(true)
//                .build();
//
////指定ToolSpecfication
//        List<ToolSpecification> toolSpecifications =
//                ToolSpecifications.toolSpecificationsFrom(WeatherUtil.class);
////1、构建对话消息
//
//        List<ChatMessage> chatMessages = new ArrayList<>();
//        UserMessage userMessage = UserMessage.from("北京的天⽓怎么样？");
//        chatMessages.add(userMessage);
////2、调⽤⼤模型，⽣成⼯具调⽤请求
//        AiMessage aiMessage = model.generate(chatMessages, toolSpecifications).content();
//        List<ToolExecutionRequest> toolExecutionRequests =
//                aiMessage.toolExecutionRequests();
//        toolExecutionRequests.forEach(toolExecutionRequest -> {
//            System.out.println("调⽤⼯具⽅法：" + toolExecutionRequest.name());
//            System.out.println("调⽤参数：" + toolExecutionRequest.arguments());
//        });
//        chatMessages.add(aiMessage);
////3、把⼯具请求以及⼯具的执⾏结果⼀起加⼊到对话消息列表中。
//        WeatherUtil weatherUtil = new WeatherUtil();
//        toolExecutionRequests.forEach(toolExecutionRequest -> {
//            DefaultToolExecutor toolExecutor = new DefaultToolExecutor(weatherUtil,
//                    toolExecutionRequest);
//            String result = toolExecutor.execute(toolExecutionRequest,
//                    UUID.randomUUID().toString());
//            System.out.println("⼯具执⾏结果" + result);
//            ToolExecutionResultMessage toolResultMessage =
//                    ToolExecutionResultMessage.from(toolExecutionRequest, result);
//            chatMessages.add(toolResultMessage);
//
//        });
////4、调⽤⼤模型，⽣成最终结果
//        AiMessage finalResponse = model.generate(chatMessages).content();
//        System.out.println("最终结果：" + finalResponse.text());
//    }
//
//
//
//}
//class WeatherUtil {
//    @Tool("获取某⼀个具体城市的天⽓")
//    public Weather getWeather(@P("城市") String city, @P("温度单位") String temperatureUnit) {
//
//        return new Weather(city, "26");
//    }
//}
//@Data
// class Weather {
//
//    // 私有属性：城市
//    @Description("城市")
//    private String city;
//    // 私有属性：温度单位
//    @Description("温度")
//    private String temperatureUnit;
//
//    public Weather(String number, String c) {
//        this.temperatureUnit = c;
//        this.city = number;
//    }
//}